package com.crm.service.before_sale;

import com.crm.pojo.ClientInfo;
import com.crm.pojo.SaleChance;
import com.crm.vo.Result;
import com.crm.vo.SaleChanceVO;
import org.springframework.web.multipart.MultipartFile;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

public interface SaleChanceService {
    /**
     * 销售机会高级查询
     * 可以根据SaleChance的任何属性进行查询，没有属性则查询全部
     * @param saleChance
     * @param curpage
     * @param pagesize
     * @param expectStartTime
     * @param expectEndTime
     * @param createStartTime
     * @param createEndTime
     * @param updateStartTime
     * @param updateEndTime
     * @return
     */
    public List<SaleChance> advanceSaleChance(SaleChance saleChance, int curpage, int pagesize ,
                                              BigDecimal minDay,BigDecimal maxDay,
                                              BigDecimal minMoney,BigDecimal maxMoney,
                                              Date expectStartTime, Date expectEndTime,
                                              Date createStartTime, Date createEndTime,
                                              Date updateStartTime, Date updateEndTime);

    /**
     * 销售机会高级查询
     * 获得SaleChance的总数量
     * @param saleChance
     * @param createStartTime
     * @param createEndTime
     * @param expectStartTime
     * @param expectEndTime
     * @param updateStartTime
     * @param updateEndTime
     * @return
     */
    public Long advanceSaleChanceCount(SaleChance saleChance,
                                       BigDecimal minDay,BigDecimal maxDay,
                                       BigDecimal minMoney,BigDecimal maxMoney,
                                       Date expectStartTime, Date expectEndTime,
                                       Date createStartTime, Date createEndTime,
                                       Date updateStartTime, Date updateEndTime);
    /**
     * 获得销售机会总数量
     * @return
     */
    public Long getSaleChanceExistCount();

    /**
     * 展示销售机会列表
     * @param curpage
     * @param rows
     * @return
     */
    public List<SaleChanceVO> queryAllSaleChanceList(int curpage,int rows);

    /**
     * 根据id删除销售机会
     * @param chId
     * @return
     */
    public Result deleteSaleChanceById(Long chId);

    /**
     * 根据客户id查找客户名称
     * （用于销售机会列表展示）
     * @param clientId
     * @return
     */
    public String getClientName(Long clientId);

    /**
     * 根据客户联系人id查找联系人姓名
     * （用于销售机会列表展示）
     * @param contactId
     * @return
     */
    public String getContactName(Long contactId);


    /**
     * 添加一个销售机会
     * @param chanceTheme
     * @param clientId
     * @param contactId
     * @param userId
     * @param expectDate
     * @param expectMoney
     * @param findTime
     * @param intentRpoduct
     * @param outlineNeed
     * @param possibility
     * @param priority
     * @param remarks
     * @param stage
     * @param stageRemain
     * @param state
     * @param succedaneum
     * @param type
     * @param updateDate
     * @return
     */
    public Result addSaleChance(String asterisk,String chanceTheme,BigDecimal clientId,BigDecimal contactId,BigDecimal userId,
                                Date expectDate,BigDecimal expectMoney,Date findTime,String intentRpoduct,
                                String outlineNeed,String possibility,String priority,String remarks,String stage,
                                BigDecimal stageRemain,String state, String succedaneum,String type,Date updateDate);

    /**
     * 编辑销售机会信息
     * @param saleChance
     * @return
     */
    public Result editSaleChance(SaleChance saleChance);

    /**
     * 获取所有销售机会主题名称
     * @return
     */
    public List<SaleChance> getSaleChanceTheme();

    /**
     * 根据机会id获取一个机会主题
     * @param chId
     * @return
     */
    public String getSaleChanceThemeById(Long chId);


    /**
     * 查找所有销售机会
     * （用于下载excel表）
     * @return
     */
    public List<SaleChance> findAll();

    /**
     * 通过excel导入销售机会
     * @param file
     * @param uploadWay
     * @return
     */
    public Result uploadExcelSaleChance(MultipartFile file, String uploadWay);

}



